﻿using Godot.core;

namespace Godot.scene
{
    public class SceneStringNames
    {
        public static SceneStringNames singleton
        {
            get { return __singleton; }
        }

        public static SceneStringNames create()
        {
            return Misc.memnew(new SceneStringNames());
        }

        private SceneStringNames()
        {
            if (__singleton != null) return;
            
            __singleton = this;

            resized = "resized";
	        dot = ".";
	        doubledot = "..";
	        draw = "draw";
	        _draw = "_draw";
	        hide = "hide";
	        visibility_changed = "visibility_changed";
	        input_event = "input_event";
	        shader_shader = "shader/shader";
	        enter_scene = "enter_scene";
	        exit_scene = "exit_scene";
	        item_rect_changed = "item_rect_changed";
	        size_flags_changed = "size_flags_changed";
	        minimum_size_changed = "minimum_size_changed";

	        finished = "finished";
	        animation_changed = "animation_changed";

	        mouse_enter = "mouse_enter";
	        mouse_exit = "mouse_exit";

	        focus_enter = "focus_enter";
	        focus_exit = "focus_exit";

	        sort_children = "sort_children";

	        body_enter_shape = "body_enter_shape";
	        body_enter = "body_enter";
	        body_exit_shape = "body_exit_shape";
	        body_exit = "body_exit";


	        idle = "idle";
	        iteration = "iteration";
	        update = "update";

	        _get_gizmo_geometry = "_get_gizmo_geometry";
	        _can_gizmo_scale = "_can_gizmo_scale";

	        _fixed_process = "_fixed_process";
	        _process = "_process";

	        _enter_scene = "_enter_scene";
	        _exit_scene = "_exit_scene";
	        _enter_world = "_enter_world";
	        _exit_world = "_exit_world";
	        _ready = "_ready";

	        _update_scroll = "_update_scroll";
	        _update_xform = "_update_xform";

	        _proxgroup_add = "_proxgroup_add";
	        _proxgroup_remove = "_proxgroup_remove";

	        grouped = "grouped";
	        ungrouped = "ungrouped";

	        enter_screen = "enter_screen";
	        exit_screen = "exit_screen";

	        enter_viewport = "enter_viewport";
	        exit_viewport = "exit_viewport";

	        enter_camera = "enter_camera";
	        exit_camera = "exit_camera";

	        _body_enter_scene = "_body_enter_scene";
	        _body_exit_scene = "_body_exit_scene";

	        _input_event = "_input_event";

	        changed = "changed";
	        _shader_changed = "_shader_changed";

	        _spatial_editor_group = "_spatial_editor_group";
	        _request_gizmo = "_request_gizmo";

	        offset = "offset";
	        unit_offset = "unit_offset";
	        rotation_mode = "rotation_mode";
	        h_offset = "h_offset";
	        v_offset = "v_offset";

	        transform_pos = "transform/pos";
	        transform_rot = "transform/rot";
	        transform_scale = "transform/scale";

	        _update_remote = "_update_remote";
	        _update_pairs = "_update_pairs";

	        get_minimum_size = "get_minimum_size";

	        area_enter = "area_enter";
	        area_exit = "area_exit";

	        has_point = "has_point";

	        line_separation = "line_separation";

	        play_play = "play/play";

	        get_drag_data = "get_drag_data";
	        drop_data = "drop_data";
	        can_drop_data = "can_drop_data";
        }

        private static SceneStringNames __singleton = null;

        public StringName resized;
        public StringName dot;
        public StringName doubledot;
        public StringName draw;
        public StringName hide;
        public StringName visibility_changed;
        public StringName input_event;
        public StringName _input_event;
        public StringName item_rect_changed;
        public StringName shader_shader;
        public StringName enter_scene;
        public StringName exit_scene;
        public StringName size_flags_changed;
        public StringName minimum_size_changed;
        public StringName idle;
        public StringName iteration;
        public StringName update;

        public StringName line_separation;

        public StringName mouse_enter;
        public StringName mouse_exit;
        public StringName focus_enter;
        public StringName focus_exit;

        public StringName sort_children;

        public StringName finished;
        public StringName animation_changed;

        public StringName body_enter_shape;
        public StringName body_enter;
        public StringName body_exit_shape;
        public StringName body_exit;


        public StringName _get_gizmo_geometry;
        public StringName _can_gizmo_scale;

        public StringName _fixed_process;
        public StringName _process;
        public StringName _enter_world;
        public StringName _exit_world;
        public StringName _enter_scene;
        public StringName _exit_scene;
        public StringName _draw;
        public StringName _input;
        public StringName _ready;

        public StringName _update_scroll;
        public StringName _update_xform;

        public StringName _proxgroup_add;
        public StringName _proxgroup_remove;

        public StringName grouped;
        public StringName ungrouped;

        public StringName has_point;
        public StringName get_drag_data;
        public StringName can_drop_data;
        public StringName drop_data;

        public StringName enter_screen;
        public StringName exit_screen;
        public StringName enter_viewport;
        public StringName exit_viewport;
        public StringName enter_camera;
        public StringName exit_camera;

        public StringName _body_enter_scene;
        public StringName _body_exit_scene;

        public StringName changed;
        public StringName _shader_changed;

        public StringName _spatial_editor_group;
        public StringName _request_gizmo;

        public StringName offset;
        public StringName unit_offset;
        public StringName rotation_mode;
        public StringName v_offset;
        public StringName h_offset;

        public StringName transform_pos;
        public StringName transform_rot;
        public StringName transform_scale;

        public StringName _update_remote;
        public StringName _update_pairs;

        public StringName area_enter;
        public StringName area_exit;

        public StringName get_minimum_size;

        public StringName play_play;
    }
}
